# 　写入文件
# 保存数据的最简单的方式之一是将其写入文件中。通过将输出写入
# 文件，即便关闭包含程序输出的终端窗口，这些输出也依然存在：
# 可以在程序结束运行后查看这些输出，可以与别人分享输出文件，
# 还可以编写程序来将这些输出读取到内存中并进行处理。

# 写入空文件
# 要将文本写入文件，你在调用open() 时需要提供另一个实参，告
# 诉Python你要写入打开的文件。为明白其中的工作原理，我们来将
# 一条简单的消息存储到文件中，而不是将其打印到屏幕上：
# write_message.py
filename = 'programming_test1.txt'			# 注意，如果文件名的文件不存在，在向其中写入数据前会自动创建该文件
with open(filename, 'w') as fileobject:		# 实参（'w' ）告诉Python，要以写入模式 打开这个文件
	fileobject.write('I love programming.')	# 使用文件对象的方法write() 将一个字符串写入文件

# 打开文件时，可指定读取模式 （'r'）、写入模式 （'w' ）、附加模式 （'a' ）或读写模式 （'r+'）。
# 如果省略了模式实参，Python将以默认的只读模式打开文件。
# 如果要写入的文件不存在，函数open() 将自动创建它。然而，以
# 写入模式（'w' ）打开文件时千万要小心，因为如果指定的文件已
# 经存在，Python将在返回文件对象前清空该文件的内容。（所以上述程序段运行多遍写入语句也只有上述一条）

# 注意 　Python只能将字符串写入文本文件。要将数值数据存储
# 到文本文件中，必须先使用函数str() 将其转换为字符串格式。


# 写入多行
# 函数write() 不会在写入的文本末尾添加换行符，因此如果写入多
# 行时没有指定换行符，文件看起来可能不是你希望的那样：
filename = 'programming_test1.txt'
with open(filename, 'w') as fileobject:
	fileobject.write("I love programming.")
	fileobject.write("I love creating new games.")
# 打开programming.txt，将发现两行内容挤在一起
# 要让每个字符串都单独占一行，需要在方法调用write() 中包含换行符
filename = 'programming_test1.txt'
with open(filename, 'w') as fileobject:
	fileobject.write("I love programming.\n")
	fileobject.write("I love creating new games.\n")
# 像显示到终端的输出一样，还可以使用空格、制表符和空行来设置这些输出的格式。


# 附加到文件
# 如果要给文件添加内容，而不是覆盖原有的内容，可以以附加模式
# 打开文件。以附加模式打开文件时，Python不会在返回文件对象前
# 清空文件的内容，而是将写入文件的行添加到文件末尾。如果指定
# 的文件不存在，Python将为你创建一个空文件。
# 下面来修改write_message.py，在既有文件programming_test1.txt中再添加
# 一些你酷爱编程的原因：
# write_message.py
filename = 'programming_test1.txt'
with open(filename, 'a') as fileobject:			# 附加模式 （'a' ）打开该文件
	fileobject.write("I also love finding meaning in large datasets.\n")
	fileobject.write("I love creating apps that can run in a browse.\n")

# 最终的结果是，文件原来的内容还在，后面则是刚添加的内容。
